package designpatterns.memento;

/**
 * 备忘录模式（Memento）
 * 又叫“快照”模式，是在不破坏封装性的前提下，捕获一个对象的内部状态，并在该对象之外保存这个状态，以便以后当需要时能装饰该对象恢复到原先保存的状态。‌
 * 捕获对象状态以便恢复，不破坏封装性。‌
 */
public class Client {
    public static void main(String[] args) {
        Originator originator = new Originator();
        Caretaker caretaker = new Caretaker();
        originator.setState("S0");
        System.out.println("初始状态：" + originator.getState());
        caretaker.setMemento(originator.createMemento());

        originator.setState("S1");
        System.out.println("新的状态：" + originator.getState());
        originator.restoreMemento(caretaker.getMemento());
        System.out.println("恢复状态：" + originator.getState());
    }
}
